Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Медленный запрос (Junky)
Author Message
Junky
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Jun 26, 2007 11:46 am (написано за 3 минуты 36 секунд)
   Post subject: Медленный запрос
Reply with quote

Здравствуйте.
Есть медленный запрос. Не знаю как оптимизировать, индексы на связующие поля поставил. Смысл запроса - выбрать последние 10 записей из таблицы с ~10 000 строк.
Code (SQL): скопировать код в буфер обмена
SELECT * FROM firma
LEFT JOIN spopf ON firma.IDOPF = spopf.IDOPF
LEFT JOIN rubrika ON firma.IDFIRM = rubrika.IDFIRM
LEFT JOIN sprubrik ON rubrika.IDRUBRIK = sprubrik.IDRUBRIK
LEFT JOIN firstrubrik ON sprubrik.IdFirstRubrik = firstrubrik.IdFirstRubrik 
WHERE moderated = 1 GROUP BY firma.IDFIRM ORDER BY firma.IDFIRM DESC LIMIT 0,10
Что показывает Explain:
Code (SQL): скопировать код в буфер обмена
1        SIMPLE        firma        range        Moderated        Moderated        4        NULL        8614        USING WHERE; USING TEMPORARY; USING filesort
1        SIMPLE        spopf        eq_ref        PRIMARY,IDOPF        PRIMARY        4        firma.IDOPF        1        
1        SIMPLE        rubrika        ref        IDFIRM        IDFIRM        5                firma.IDFIRM        1        
1        SIMPLE        sprubrik        eq_ref        PRIMARY        PRIMARY        4        rubrika.IDRUBRIK        1        
1        SIMPLE        firstrubrik        eq_ref        PRIMARY        PRIMARY        4        sprubrik.IdFirstRubrik        1
Запрос выполняется ~1 сек. очень не нравится это. Куда копнуть?
Back to top
arbyte
Участник форума



Joined: 09 Sep 2006
Posts: 40
Карма: 3
   поощрить/наказать

Location: Москва

PostPosted: Tue Jun 26, 2007 10:19 pm (спустя 10 часов 33 минуты; написано за 27 секунд)
   Post subject:
Reply with quote

Может, попробовать в SELECT вместо "*" указать только интересующие поля?
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Mon Jul 02, 2007 12:20 am (спустя 5 дней 2 часа 1 минуту; написано за 16 секунд)
   Post subject:
Reply with quote

Junky
а без сортировки работает быстро?
Back to top
View user's profile Send private message
Junky
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Jul 02, 2007 1:24 pm (спустя 13 часов 3 минуты; написано за 13 секунд)
   Post subject:
Reply with quote

Maus, так точно.
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Mon Jul 02, 2007 8:12 pm (спустя 6 часов 47 минут; написано за 2 минуты 50 секунд)
   Post subject:
Reply with quote

Junky
ну в этом значит и проблема. Если не ошибаюсь, где-то в мануале мне встречалось утверждение о том, что при наличии сортировки MySQL игнорирует кэши и обязательно перед сортировкой создаёт временную таблицу и помещает результат туда.
Back to top
View user's profile Send private message
Junky
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Jul 03, 2007 4:56 pm (спустя 20 часов 44 минуты; написано за 18 секунд)
   Post subject:
Reply with quote

так какой выход из ситуации вы видите?
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Tue Jul 03, 2007 8:59 pm (спустя 4 часа 2 минуты; написано за 3 минуты 26 секунд)
   Post subject:
Reply with quote

Junky
ну, например, можно выдернуть и отсортировать только идентификаторы - а вторым запросом дернуть уже строки целиком.
Еще я слышал про шаманский метод с физической перестройкой таблицы - чтоб без ORDER возвращался результат, упорядоченный по нужному столбцу. Но утверждать не берусь.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML